package acwing.TwoPointer;

import java.io.*;
import java.util.HashSet;
import java.util.Set;

/**
 * 给定一个长度为 n
 *  的整数序列，请找出最长的不包含重复的数的连续区间，输出它的长度。
 *
 * 输入格式
 * 第一行包含整数 n.
 *
 * 第二行包含 n
 *  个整数（均在 0∼105
 *  范围内），表示整数序列。
 *
 * 输出格式
 * 共一行，包含一个整数，表示最长的不包含重复的数的连续区间的长度。
 *
 * 数据范围
 * 1≤n≤105
 *
 * 输入样例：
 * 5
 * 1 2 2 3 5
 * 输出样例：
 * 3
 */
public class LongestUniqueSubsequence_ {
    static int N = 100010;
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws IOException {
        int n = Integer.valueOf(br.readLine());
        int[] arr = new int[N];
        String[] s = br.readLine().split(" ");
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.valueOf(s[i]);
        }
        System.out.println(LongestUniqueSubsequence(arr));
        bw.close();
        br.close();

    }
    // 双指针
    public static int LongestUniqueSubsequence(int[] arr){
        // 剪枝
        if (arr == null || arr.length == 0) return 0;
        if (arr.length == 1) return 1;
        int res = 0;
        int[] s = new int[N];
        for(int i = 0 , j = 0 ; i < arr.length ; i++){
            s[arr[i]]++;
            while(j < i && s[arr[i]] > 1){
                s[arr[j++]]--;
            }
            res = Math.max(res, i - j + 1);
        }
        return res;
    }
}
